// 引入expess框架
// 导入express-session
// 导入处理路径
// 导入art-template
// 引入body-parser模块用来处理post请求参数
// 导入dateformat第三方
// 导入morgan第三方
// 导入config模块
const express = require('express');
const session = require('express-session');
const path = require('path');
const template = require('art-template')
const bodyParser = require('body-parser');
const dateFormat = require('dateformat');
const morgan = require('morgan')
const config = require('config')


// 创建服务器
const app = express();


// 连接数据库
require('./model/connect',);


// 处理post请求参数
app.use(bodyParser.urlencoded({ extended: false }));

// 配置session
app.use(session({
    secret: 'secret key',
    saveUninitialized: false,
    cookie: {
        maxAge: 24 * 60 * 60 * 1000
    }
}))

// 测试用户的创建
// require('./model/user');  成功


// 告诉express框架模版所在的位置
app.set('views', path.join(__dirname, 'views'));


// 告诉express框架模版的默认后缀是什么
app.set('view engine', 'art');


// 当渲染后缀为art的模版时，所使用的引擎是
app.engine('art', require('express-art-template'));
// 模版内导入dateFormate变量
template.defaults.imports.dateFormat = dateFormat

// 开放静态资源文件
app.use(express.static(path.join(__dirname, 'public')));


//获取系统环境变量 返回值是对象
if (process.env.NODE_env == 'development') {
    // 开发环境
    console.log('开发');
    app.use(morgan('dev'))
}else {
    // 生产环境
    console.log('生产');
}


// 引入路由模块
const home = require('./route/home');
const admin = require('./route/admin');
const { nextTick } = require('process');

app.use('/admin', require('./middleware/loginGuard.js'))
// 为路由匹配路径
app.use('/home', home);
app.use('/admin', admin);

// 错误处理中间件
app.use((err, req, res, next) => {
    // 字符串转对象
    // JSON.parse()
    const result = JSON.parse(err);
    let params = [];
    for (let attr in result) {
        if (attr != 'path') {
            params.push(attr + '=' + result[attr]);
        }
    }
    res.redirect(`${result.path}?${params.join('&')}`);
})


// 监听端口
app.listen(80);
console.log('网站服务器启动成功，请访问localhost');

